package com.yudean.esb.service;

import javax.jws.WebService;

/**
 * ERP财务接口
 */
@WebService
public interface AccountDAO {
    /**
     * 根据ccid查询科目组合
     *
     * @param ccid
     * @return
     */
    String getAccountCombinationsByCCId(String ccid);

    /**
     * 根据公司编码查询科目组合
     *
     * @param CompCode
     * @return
     */
    String getAccountCombinationsByCompCode(String CompCode);


    /**
     * 查询所有科目组合
     *
     * @param pageNo   页码
     * @param pageSize 分页大小
     * @return
     */
    String getAllAccountCombinations(String pageNo, String pageSize, String username, String password);

    /**
     * 根据公司编码和科目编码查询科目组合
     *
     * @param CompCode
     * @param acctCode
     * @return
     */
    String getAccountCombinationsByCompCodeandAcctCode(String CompCode,
                                                       String acctCode);

    /**
     * 根据科目编码查询科目
     *
     * @param AcctCode
     * @return
     */
    String getAccountByAcctCode(String AcctCode);

    /**
     * 获取所有科目
     *
     * @param
     * @return
     */
    String getAllAccount();

    /**
     * 获取所有一级科目
     *
     * @param
     * @return
     */
    String getAllFatherAccount();

    /**
     * 根据父科目获取子科目
     *
     * @param fatherCode
     * @return
     */
    String getSubAccountByFatherCode(String fatherCode);

    /**
     * 根据公司编码查询子科目
     *
     * @param CompCode
     * @return
     */
    String getAccountSubByCompCode(String CompCode);


    /**
     * 查询所有子科目（分页）
     *
     * @param pageNo   页码
     * @param pageSize 分页大小
     * @return
     */
    String getAllSubAccount(String pageNo, String pageSize, String username, String password);

    /**
     * 根据子科目编码查询子科目
     *
     * @param AcctCodeSub
     * @return
     */
    String getAccountSubByAcctCodeSub(String AcctCodeSub);

    /**
     * 根据月份和公司三字码查找公司余额
     *
     * @param periodName
     * @param segment1
     * @param username
     * @param password
     * @return
     */

    String getBalanceByPeriodName(String periodName, String segment1,
                                  String username, String password);

    String getAllBalanceByPeriodName(String periodName, String pageNo, String pageSize,
                                     String username, String password);

    /**
     * 根据科目号码查找余额
     *
     * @param codeCombinationId
     * @param segment1
     * @param username
     * @param password
     * @return
     */
    String getBalanceByCombination(Long codeCombinationId,
                                   String segment1, String username, String password);

    /**
     * @param compCode
     * @param beginDate
     * @param endDate
     * @param username
     * @param password
     * @return
     */
    String getJournalByDate(String compCode, String beginDate, String endDate, String username, String password);


    /**
     * @param beginDate
     * @param endDate
     * @param pageNo
     * @param pageSize
     * @param username
     * @param password
     * @return
     */
    String getAllJournalByDate(String beginDate, String endDate, String pageNo, String pageSize, String username, String password);


    /**
     * @param periodName
     * @param username
     * @param password
     * @return
     */
    String getJournalByPeriodName(String periodName, String pageNo, String pageSize, String username, String password);

    /**
     * 根据月份和科目号和公司三字码查找余额
     *
     * @param codeCombinationId
     * @param segment1
     * @param periodName
     * @param username
     * @param password
     * @return
     */
    String getBalanceByCombinationandperiodName(Long codeCombinationId,
                                                String segment1, String periodName, String username, String password);

    /**
     * @param compCode
     * @param username
     * @param password
     * @return
     */
    String getJournal3Month(String compCode, String username,
                            String password);


    /**
     * @param pageNo
     * @param pageSize
     * @param username
     * @param password
     * @return
     */
    String getAllJournal3Month(String pageNo, String pageSize, String username, String password);

    /**
     * 根据日期获取ERP回写库存凭证信息
     *
     * @param compCode
     * @param beginDate
     * @param endDate
     * @param username
     * @param password
     * @return
     */
    String getInvVoucherInfo(String compCode, String beginDate,
                             String endDate, String username, String password);

    String getAllGLFlexValues(String pageNo, String pageSize, String username, String password);

    String getAllGLFlexValuesByUsedCompsAndFlexValueSetName(String usedComps, String flexValueSetName, String pageNo, String pageSize, String username, String password);

    String getAllMdsOrganization(String username, String password);

    String getAllMdsHfmEntity(String username, String password);


    String getMdsFlexValuesByTypeAndCompCode(String flexType, String compCode);

    String getMdsFlexValuesByTypeAndCompCodeAndDescription(String flexType, String compCode, String flexDescription);

    /**
     * 根据期间、类型、公司查询所有凭证信息(分页方式)
     *
     * @param periodName
     * @param source
     * @param compCode
     * @param pageNo
     * @param pageSize
     * @param username
     * @param password
     * @return
     */
    String getJournalByPeriodNameAndJeSourceAndCompCode(String periodName, String source, String compCode, String pageNo, String pageSize, String username, String password);

    /**
     * 通过ERP公司三字码查询ERP和EHR部门映射
     *
     * @param erpCompCode
     * @param username
     * @param password
     * @return
     */
    String getEhrErpDeptByErpCompCode(String erpCompCode, String username, String password);
}
